<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>39-浅拷贝</title>
</head>
<body>
    <script>
        // 1. 对象拷贝
        // const obj = {
        //     name:'宋嘉乐'
        // }
        // 1.1 Object.assign()=======================================
        // const newObj ={}
        // Object.assign(newObj, obj)
        // console.log(newObj)   // {name: '宋嘉乐'}
        // console.log(newObj === obj) // false
        // // newObj.name = '姜新华'
        // obj.name = '姜新华'
        // console.log(obj)     // {name: '姜新华'}
        // console.log(newObj)  // {name: '宋嘉乐'}


        // const newObj2 ={}
        // Object.assign(newObj2, obj)
        // console.log(obj)      // {name: '姜新华'}
        // console.log(newObj2)  // {name: '姜新华'}
        
        // 1.2 展开运算符==============================================
        // const newObj = {...obj}

        // console.log(obj)    // {name: '宋嘉乐'}
        // console.log(newObj) // {name: '宋嘉乐'}

        // console.log(newObj === obj)  // false
        // obj.name = '姜新华'

        // console.log(obj)    // {name: '姜新华'}
        // console.log(newObj) // {name: '宋嘉乐'}

        // 2.数组拷贝
        // const arr = ['周祺','宋嘉乐']

        // 2.1 concat 方法实现数组浅拷贝
        // const arr1 = []
        // const newArr = arr1.concat(arr)
        // console.log(arr)    // ['周祺', '宋嘉乐']
        // console.log(newArr) // ['周祺', '宋嘉乐']

        // newArr[1] = '杨欣怡'
        // console.log(arr)    // ['周祺', '宋嘉乐']
        // console.log(newArr) // ['周祺', '杨欣怡']

        // 2.2 展开运算符
        // const newArr = [...arr]

        // console.log(arr)    // ['周祺', '宋嘉乐']
        // console.log(newArr) // ['周祺', '宋嘉乐']

        // newArr[1] = '侯睿'
        // console.log(arr)    // ['周祺', '宋嘉乐']
        // console.log(newArr) //['周祺', '侯睿']

        // 3. 浅拷贝的问题如果遇到多层拷贝还是会影响原来的对象
        const obj = {
            name:'周思涵',
            family:{
                father:'周爸爸'
            }
        }
        const newObj = {...obj}

        console.log(obj)
        console.log(newObj)

        newObj.family.father = '周父'
        newObj.name = '小周'
        console.log(obj)
        console.log(newObj)

    
        


        
    </script>
</body>
</html>